Выполнение
транзакций
Транзакцией
называется операция обмена данными между клиентом и сервером. Методы объекта
Workspace, использующиеся для выполнения транзакций, представлены в табл. 16.7.
Таблица
16.7.
Методы объекта Workspace для выполнения транзакций
|
|
|
|
|
|
|
|
|
|
Обозначает начало
транзакции. Транзакции могут быть вложенными
|
|
|
CommitTrans
|
Обозначает
конец транзакции. В этот момент все изменения сохраняются в источнике
без возможности их отмены
|
|
|
RollBack
|
Завершение
транзакции и отмена результата ее выполнения. Записи в источнике возвращаются
в прежнее состояние, отмеченное командой BeginTrans
|
|
Все базы данных,
открытые в рабочей области, имеют общую область действия транзакций. Это значит,
что действие методов BeginTrans, CommitTrans и RollBack объекта Workspace распространяется
на все базы данных в семействе Databases объекта Workspace.
Рассмотрим
пример программы на VBA с использованием механизма выполнения транзакций (программа
16.11). В приложении "Игра в доминирование" механизм транзакций не
используется.
Программа
16.11. Применение механизма транзакций
Sub
ResetCount ()
Dim
ws As Workspace
Dim
db As Database
Dim
rs As Recordset
Dim
flnTrans As Boolean
On
Error GoTo errHandler ;..
flnTrans
= False ' Транзакция еще не началась
Set
ws = DBEngine.Workspaces(0)
Set
db = CurrentDb
Set
rs = db.OpenRecordset("Игроки", dbOpenTable)
ws.BeginTrans
' Начало транзакции
flnTrans
= True ' ' Транзакция началась
rs.MoveFirst
Do
Until rs.EOF
rs.Edit
rs!Счет
= 0
rs.Update
rs.MoveNext
Loop
If
MsgBox("Сохранить
сделанные изменения?", _
vbQuestion
+ vbYesNo, "Вопрос") = vbYes Then
ws.CommitTrans
' Сохранить изменения Else
ws.Rollback
' Отменить изменения
End
If
exitHandle:
rs.Close
Set
db = Nothing
Set
ws = Nothing
Exit
Sub errHandler:
MsgBox
"Ошибка!"
'
Если ошибка возникла в процессе выполнения транзакции,
'
отменяем сделанные изменения
If
flnTrans Then
ws.Rollback
End
If
Resume
exitHandle
End
Sub
Содержание раздела
|